<?php
class RenRen{
	private $_userid;
	private $call_id;
	private $key;
	private $session_key;
	private $curl;
	function __construct(){
		global $config_api;
		$this->call_id=time();
		$this->curl=new MyCurl();
		$this->session_key=$_SESSION['session_key'];
		$this->_userid=$this->getLoggeduserId();
	}
	/**
	 * 输入参数返回对应API信息
	 * @param array $param
	 */
	function getApiInfo($param){
		$param['sig'] =getSig($param);
		$result = $this->curl->post(API_URL,$param);
		return json_decode($result,true);
	}
	/**
	 * 取得登录用户id
	 */
	function getLoggeduserId(){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',           //制定返回的数据格式
			'method' => 'users.getLoggedInUser',
			'session_key' => $this->session_key,
			'v' => V
		);
		$userid=$this->getApiInfo($param);
		return $userid['uid'];
	}
	/**
	 * 获取一个应用当天可以发送的通知的配额
	 */
	function admin_getAllocation(){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',
			'method' => 'admin.getAllocation',
			'session_key' =>$this->session_key,
			'v' => V
		);
		return $this->getApiInfo($param);
	}
	/**
	 * 判断两组用户是否互为好友关系，比较的两组用户数必须相等。
	 *  $uids1,$uids2:每组id用逗号隔开
	 */
	function friends_areFriends($uids1,$uids2){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',
			'method' => 'friends.areFriends',
			'session_key' =>$this->session_key,
			'uids1' =>$uids1,
			'uids2' =>$uids2,
			'v' => V
		);
		return $this->getApiInfo($param);
	}
	/**
	 * 得到当前登录用户的好友列表，得到的只是含有好友id的列表。 
	 */
	function friends_get(){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',
			'method' => 'friends.get',
			'session_key' =>$this->session_key,
			'v' => V
		);
		return $this->getApiInfo($param);
	}
	/**
	 * 得到当前登录用户的好友列表。
	 */
	function friends_getFriends(){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',
			'method' => 'friends.getFriends',
			'session_key' =>$this->session_key,
			'v' => V
		);
		return $this->getApiInfo($param);
	}
	/**
	 * 查询当前用户安装某个应用的好友列表，此接口返回全部数据
	 */
	function friends_getAppFriends(){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',
			'method' => 'friends.getAppFriends',
			'session_key' =>$this->session_key,
			'fields' =>'id,name,tinyurl,headurl',
			'v' => V
		);
		return $this->getApiInfo($param);
	}
	/**
	 * 创建站外邀请的链接地址。
	 * 获取邀请链接地址的域名属性，0表示人人(wwv.renren.com)，1表示开心(wwv.kaixin.com)
	 */
	function invitations_createLink($domain=0){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',
			'method' => 'invitations.createLink',
			'session_key' =>$this->session_key,
			'domain' =>$domain,
			'v' => V
		);
		return $this->getApiInfo($param);
	}
	/**
	 * 根据邀请的新用户id得到此次邀请的详细信息（邀请人、邀请时间、被邀请人）。 
	 * 1.如果想获得某个用户被谁邀请进来，请传入invitee_id,
	 * 2.如果想获得一段时间内所有用户的邀请信息，请传入begin_time和end_time，此时请不要传入invitee_id
	 * 时间格式为：yyyy-MM-dd HH:mm:ss
	 * @param int $invitee_id	被邀请者的用户id
	 * @param string $begin_time	查询起始时间
	 * @param string $end_time	查询结束时间
	 */
	function invitations_getInfo($invitee_id=0,$begin_time=0,$end_time=0){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',
			'method' => 'invitations.getInfo',
			'v' => V
		);
		if($invitee_id){
			$param['invitee_id']=$invitee_id;
		}elseif($begin_time&&$end_time){
			$param['begin_time']=$begin_time;
			$param['end_time']=$end_time;
		}
		return $this->getApiInfo($param);
	}
	/**
	 * 	给指定的用户发送通知。 
	 * @param $notification	通知的内容，可以是XNML类型的文本信息，支持的XNML有<xn:name/>和<a/>，请注意：使用<xn:name/>标签的时候，其uid属性值只能是真实的用户id（阿拉伯数字）。
	 * @param $to_ids	这些用户必须是当前登录者的好友或也安装了此应用。请确保一次传入的用户id数少于20个。默认给当前用户发送通知
	 */
	function notifications_send($notification,$to_ids=''){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',
			'method' => 'notifications.send',
			'to_ids' => $to_ids,
			'notification' => $notification,
			'v' => V
		);
		return $this->getApiInfo($param);
	}
	/**
	 * 在取得用户的授权后，给用户发送Email。 
	 * @param string $recipients	收件人的UID，多个ID用逗号隔开，例如：2838234,2342312. 一次最多100个ID
	 * @param string $template_data	JSON对象，渲染邮件模板所需要的数据。例如：{"who":"234234","static_uid":"23423423"}
	 */
	function notifications_sendEmail($recipients,$template_data){
		$param = array(
			'api_key' => KEY,
			'call_id' => $this->call_id,
			'format' => 'json',
			'method' => 'notifications.sendEmail',
			'template_id' => 1,
			'recipients' => $recipients,
			'template_data' => $template_data,
			'v' => V
		);
		return $this->getApiInfo($param);
	}
	/**
	 * 	得到用户信息
	 * @param $uids 用户id
	 */
	function users_getInfo($uids){
		$param = array(
			'api_key' => KEY,
			'method' => 'users.getInfo',   //那这个api做例子
			'call_id' =>$this->call_id,
			'v' => V,
			'uids' => $uids,        //制定获取哪个个用户的信息
			'format' => 'json',           //制定返回的数据格式
			'session_key' => $this->session_key,
			'fields' => 'uid,name,sex,star,zidou,vip,birthday,email_hash,tinyurl,headurl,mainurl,hometown_location,work_info,university_info'  
		);
		return $this->getApiInfo($param);
	}
	function status_getEmoticons(){
		$param = array(
			'api_key' => KEY,
			'method' => 'status.getEmoticons',   //那这个api做例子
			'call_id' =>$this->call_id,
			'v' => V,
			'format' => 'json'
		);
		return $this->getApiInfo($param);
	}
}
?>